#include <stdio.h>
#include <string.h>

//input n: the nth month
//ouput int Arr[3]: NumofChildRabbits, NumofAdultRabbits, NumofRabbits
//可以把int Arr[3]修改为long long int Arr[3],一边支持更大范围的数值计算
void Count(int n, int Arr[3])   
{
	if (n < 0)
	{
		Arr[0] = -1;
		Arr[1] = -1;
		Arr[2] = 0;
	}
	if (n == 0)
	{
		Arr[0] = 1;
		Arr[1] = 0;
		Arr[2] = 1;
	}
	else if (n == 1)
	{
		Arr[0] = 0;
		Arr[1] = 1;
		Arr[2] = 1;
	}
	else
	{
		int arr[3];
		Count(n - 1, arr);
		Arr[0] = arr[1];//上一个月的成兔
		Arr[1] = arr[0] + arr[1];
		Arr[2] = Arr[0] + Arr[1];
	}
}
// The main function
int main(void)
{
	char inputStr[100] = "";
	do
	{
		printf("Please input an integer(<=46) or a command string\n");
		scanf("%s", inputStr);
		int n = atoi(inputStr);
		/*C 库函数 int atoi(const char *str) 把参数 str 所指向的字符串转换为一个整数（类型为 int 型）。
		该函数返回转换后的长整数，如果没有执行有效的转换，则返回零。*/
		int A[3];
		Count(n, A);
		printf("There are %d child rabbits\n There are %d adult rabbits\n The total number of rabbits is %d\n\n",
		       A[0], A[1], A[2]);
	}
	while (strcmp(inputStr, "exit") != 0);

	return (0);
}
